package com.cskaoyan.javase._1extends._5protected.two;

import com.cskaoyan.javase._1extends._5protected.one.CurrentClazz;
import com.cskaoyan.javase._1extends._5protected.one.SamePackageSonClazz;

/**
 * 不同包下的子类
 * 访问父类CurrentClazz中的受保护成员,有几种访问方式?
 *      1.直接创建父类CurrentClazz对象,直接访问父类的受保护成员
 *          不行,没有访问权限
 *
 *      2.直接创建子类自身对象,访问自身从父类当中继承过来的受保护成员
 *          可以的
 *
 *      3.直接创建自身"兄弟姐妹"对象,访问它们从父类当中继承过来的受保护成员
 *          不行,没有访问权限
 *
 *  综上，不同包下的子类去访问父类的受保护成员，只有一种方式：
 *          创建子类自身对象，然后访问子类自身从父类当中继承过来的受保护成员
 *
 * @since 11:07
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class AnotherPackageSonClazz extends CurrentClazz {
    public static void main(String[] args) {
        // 1.直接创建父类CurrentClazz对象,直接访问父类的受保护成员
        CurrentClazz cc = new CurrentClazz();
        // cc.num

        // 2.直接创建子类自身对象,访问自身从父类当中继承过来的受保护成员
        AnotherPackageSonClazz apsc = new AnotherPackageSonClazz();
        System.out.println(apsc.num);

        // 3.直接创建自身"兄弟姐妹"对象,访问它们从父类当中继承过来的受保护成员
        SamePackageSonClazz spsc = new SamePackageSonClazz();
        // spsc.num
    }

    public void test(){
        // 已经存在this传参,已经存在自身对象了,所以可以直接访问父类中继承过来的受保护成员
        System.out.println(num);
    }
}
